关于源(仓库,repository)
仓库(repository)是一个预备好的目录(安装镜像文件iso就可以作为这样一个仓库,下面有如何把安装镜像iso文件作为一个仓库,安装我们在安装系统的时候没有安装的一些工具),或是一个网站,包含了软件包(RPM 软件包)和索引文件。
软件管理工具,例如yum,可以在仓库中自动地定位并获取正确的 RPM 软件包。这样,您就不必手动搜索和安装新应用程序和升级补丁了。只用一个命令,您就可以更新系统中所有软件,也可以根据指定搜索目标来查找安装新软件。
关于yum
与apt功能类似的rpm包管理系统,那就是yum。
yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
首 先,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间,但比起yum 给我们带来方便,这些时间的花费又算的了什么呢?header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,还是说 y吧,把系统始终up to date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再 进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。
添加新的源
有一系列的服务器,为每个版本的 Fedora 分别提供了一些仓库。常用的这样的服务器有:
- 台灣義守大學的Mirror站
- 上海交通大学的Mirror站
在自己系统中安装上海交通大学的Mirror站。首先输入打开终端输入su,输入密码,取得管理员权限。在该目录下编辑一个.repo文件/etc/yum.repos.d/sjtu.repo,sjtu.repo 中的内容如下所示:
[Fedora-ftp.sjtu.edu.cn] name=Fedora 12 - i386 baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Fedora/i386/os/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora [Everything-ftp.sjtu.edu.cn] name=Everything 12 - i386 baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/12/Everything/i386/os/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora [updates-ftp.sjtu.edu.cn] name=Fedora updates baseurl=http://ftp.sjtu.edu.cn/fedora/linux/updates/12/i386/ enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
在下次使用yum命令的时候,就会把该源加入到搜索路径下。你也可以使用yum makecache命令将这个源的索引表先下载到本地。
安装第三方仓库rpmfusion
rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
常用yum命令
1.列出所有可更新的软件清单 命令:yum check-update 2.安装所有更新软件 命令:yum update 3.仅安装指定的软件 命令:yum install 软件名 例如:yum install gcc 4.仅更新指定的软件 命令:yum update 软件名 例如:yum update gcc 注:其实,如果系统已经安装了该软件,yum install和yum update达到的效果是一样的,他会检查在仓库里是否有该软件更新的版本。 5.列出所有已经安装的和可安裝的软件清单(Installed Packages Available Packages) 命令:yum list 6.删除软件 命令:yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 7.使用YUM查找软件包 命令:yum search 8.列出所有可更新的软件包 命令:yum list updates 9.列出所有已安装的软件包 命令:yum list installed 10.列出所有已安装但不在 Yum Repository 內的软件包 命令:yum list extras 11.列出所指定的软件包 命令:yum list 软件包 12.使用YUM获取软件包信息 命令:yum info 软件包 13.列出所有软件包的信息 命令:yum info 14.列出所有可更新的软件包信息 命令:yum info updates 15.列出所有已安裝的软件包信息 命令:yum info installed 16.列出所有已安裝但不在 Yum Repository 內的软件包信息 命令:yum info extras 17.列出软件包提供哪些文件 命令:yum provides
yum详解
yum的header缓存
前面说过,在执行yum update命令的时候,这一步就是yum会从服务器的header目录下载rpm的header,放在本地的缓存中。例如,我的就是存放在下面的目录下:
[root@localhost 12]# pwd /var/cache/yum/i386/12 [root@localhost 12]# ls dvd_iso livna rpmfusion-nonfree-updates Everything-ftp.sjtu.edu.cn rpmfusion-free updates fedora rpmfusion-free-updates updates-ftp.sjtu.edu.cn Fedora-ftp.sjtu.edu.cn rpmfusion-nonfree [root@localhost 12]# du -sh * 25M dvd_iso 120M Everything-ftp.sjtu.edu.cn 129M fedora 25M Fedora-ftp.sjtu.edu.cn 8.0K livna 3.0M rpmfusion-free 3.5M rpmfusion-free-updates 624K rpmfusion-nonfree 1.1M rpmfusion-nonfree-updates 387M updates 67M updates-ftp.sjtu.edu.cn
yum就是根据存放在这里的这些rpm的header来检测系统中安装的软件(rpm软件包)是不是最新版本,需不需要update。其实,在每一次使用yum intall xxx命令的使用,yum会自动将/etc/yum.repos.d/目录下.repo文件对应源的header文件下载到本地。
如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一股脑儿全部清除。
1.清除缓存目录(/var/cache/yum)下的软件包 命令:yum clean packages 2.清除缓存目录(/var/cache/yum)下的 headers 命令:yum clean headers 3.清除缓存目录(/var/cache/yum)下旧的 headers 命令:yum clean oldheaders 4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers 命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)
注意,在这个cache文件夹下,其实,对应这/etc/yum.repo.d/下面的每一个仓库描述文件(或者叫做源描述文件),如果你修改或者删除了了/etc/yum.repo.d/下面的这些文件,这yum clean 就没办法清除这些文件了。
yum makecache就是把服务器的包header信息下载到本地电脑缓存起来。配合yum -C search xxx使用,不用上网检索就能查找软件信息。
-C run entirely from cache, don't update cache
查看和跟新某个软件
查看系统中安装的某个包的版本以及现在可以跟新的最新版本:
yum makecache //将服务器上最新的软件版本的相关信息(也就是header)下载到本地 yum info xxx //查看xxx软件的相关信息
例如想要更新chrome浏览器到最新版本。首先确定安装了chrome的源。
[root@localhost yum.repos.d]# pwd /etc/yum.repos.d [root@localhost yum.repos.d]# more ./google.repo [google] name=Google - i386 baseurl=http://dl.google.com/linux/rpm/stable/i386 enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
以上命令可以看到已经安装了chrome的源文件google.repo在路径/etc/yum.repos.d/下。更新本地的源描述文件。
[root@localhost yum.repos.d]# yum makecache Loaded plugins: presto, refresh-packagekit google | 951 B 00:00 Metadata Cache Created
以上命令yum makecache就是将服务器上软件软件版本的相关信息下载到了本地yum的cache中。下面就查看chrome的软件版本是否有跟新。当然,刚开始你可能并不知道chrome浏览器在源中的全名是什么,我们可以首先用匹配查找。
[root@localhost yum.repos.d]# yum -C search chrome Loaded plugins: presto, refresh-packagekit ================================= Matched: chrome ================================= links.i686 : Web browser running in both graphics and text mode google-chrome-beta.i386 : Google Chrome google-chrome-stable.i386 : Google Chrome google-chrome-unstable.i386 : Google Chrome ……
通过查找,大概知道应该叫做google-chrome-xxx,其中beta,stable,unstable是各种发行版而已。下面就看看chrome浏览器有没有跟新。输出结果列举了已经安装的软件(Installed Packages)和服务器源中的最新软件(Available Packages)。
[root@localhost yum.repos.d]# yum info google-chrome* Loaded plugins: presto, refresh-packagekit Installed Packages Name : google-chrome-beta Arch : i386 Version : 7.0.517.24 //已经安装的软件版本 Release : 60738 Size : 73 M Repo : installed From repo : google Summary : Google Chrome URL : http://chrome.google.com/ License : Multiple, see http://chrome.google.com/ Description: The web browser from Google : : Google Chrome is a browser that combines a minimal design with : sophisticated technology to make the web faster, safer, and easier. Available Packages Name : google-chrome-beta Arch : i386 Version : 8.0.552.200 //服务器上现在有的软件版本 Release : 65749 Size : 33 M Repo : google Summary : Google Chrome URL : http://chrome.google.com/ License : Multiple, see http://chrome.google.com/ Description: The web browser from Google : : Google Chrome is a browser that combines a minimal design with : sophisticated technology to make the web faster, safer, and easier. Name : google-chrome-stable Arch : i386 Version : 7.0.517.44 Release : 64615 Size : 27 M Repo : google Summary : Google Chrome URL : http://chrome.google.com/ License : Multiple, see http://chrome.google.com/ Description: The web browser from Google : : Google Chrome is a browser that combines a minimal design with : sophisticated technology to make the web faster, safer, and easier. Name : google-chrome-unstable Arch : i386 Version : 9.0.576.0 Release : 65344 Size : 34 M Repo : google Summary : Google Chrome URL : http://chrome.google.com/ License : Multiple, see http://chrome.google.com/ Description: The web browser from Google : : Google Chrome is a browser that combines a minimal design with : sophisticated technology to make the web faster, safer, and easier.
可以看到,系统中已经安装的版本为google-chrome-beta的7.0.517.24版本。而服务器源上google-chrome-beta的最新版本是8.0.552.200。这样,我们就可以通过yum命令直接升级chrome浏览器。
[root@localhost yum.repos.d]# yum update google-chrome-beta ……
gpg的问题
如果你下载了一个rpm包到本地,然后要用yum命令来安装(当然,你也可以用rpm命令安装)。绝大部分时候,用yum install xxx.rpm时会提示"Package xxx.rpm is not signed"而使安装中断,有两种解决方法:
(1)加上--nogpgcheck选项
yum --nogpgcheck install xxx.rpm
(2)修改/etc/yum.conf
vim /etc/yum.conf 将gpgcheck=1改为gpgcheck=0
yum group
终于知道,原来yum是以group的形式来管理kde,gnome等含有众多软件的包。也许你想将整个KDE都卸载掉,yum的group特性就很重要。
列举出所有安装的group和源中可能的group:
yum grouplist
未解决的问题
如何只安装一个package中的某一个软件呢,例如,我只想安装kdegraphics中的okular这个pdf阅读器?
Details: Graphics applications, including * gwenview (an image viewer) * * kamera (digital camera support) * * kcolorchooser (a color chooser) * * kolourpaint4 (an easy-to-use paint program) * * kruler (screen ruler and color measurement tool) * * ksnapshot (screen capture utility) * * okular (a document viewer)